/**
 * 
 */
package it.polimi.politics.ejb.managers;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import it.polimi.politics.dto.CandidaturaDTO;
import it.polimi.politics.dto.PartitoDTO;
import it.polimi.politics.dto.UtentiDTO;
import it.polimi.politics.ejb.entities.Candidatura;
import it.polimi.politics.ejb.entities.Group;
import it.polimi.politics.ejb.entities.Partito;
import it.polimi.politics.ejb.entities.Utenti;
import it.polimi.politics.managers.CandidatureManager;
import it.polimi.politics.managers.UserManager;


@Stateless
public class CandidatureMgrBean implements CandidatureManager {

	@PersistenceContext
	private EntityManager em;
	

	//POLITICO e CITTADINO
	
		/*@Override
		public CandidaturaDTO trovaCandidatura(int idCandidato){
			Candidatura candidato=em.find(Candidatura.class, idCandidato);
			
			return convertToDTO(candidato);
		}
		
		*/
	

		@Override
		public List<CandidaturaDTO> visualizzaCandidature(){
			
			List<Candidatura> candidatureList = new ArrayList<Candidatura>();
			List<CandidaturaDTO> candidatureDTOList = new ArrayList<CandidaturaDTO>();
			
			candidatureList = em.createNamedQuery(Candidatura.FIND_ALL,Candidatura.class).getResultList();
			
			for(int i = 0; i < candidatureList.size(); i++){
				candidatureDTOList.add(convertToDTO(candidatureList.get(i)));
				/*Utenti    user	  = em.createNamedQuery(Utenti.FIND_BY_ID, Utenti.class).getSingleResult();
				UtentiDTO userDTO = userMgrBean.convertToDTO(user);
				candidatureDTOList.get(i).setUtente(userDTO);;*/
				
			}
			
			return candidatureDTOList;
			
			
			
		}
		
		@Override
		public void accettaCandidatura(){
			
		}
		
		@Override
		public void rifiutaCandidature(){
			
		}
		
		//CITTADINO
		
		
		@Override
		public void creaCandidatura(CandidaturaDTO candidatura,
									PartitoDTO     partito, 
									UtentiDTO      utente) {
			
			Candidatura candidat = new Candidatura(candidatura);
			Partito		part	 = new Partito(partito);
			Utenti		user	 = new Utenti(utente);
			
			candidat.setPartito(part);
			candidat.setUtenti (user);
			
			em.merge(candidat);
			
		}	
			
		
		
			
		//HELPER
		
		public CandidaturaDTO convertToDTO(Candidatura candidato) {
			CandidaturaDTO candidatura= new CandidaturaDTO();
			candidatura.setCV(candidato.getCv());
			candidatura.setIdcandidatura(candidato.getIdcandidatura());
			candidatura.setLettera(candidato.getLetteramotivazione());
			candidatura.setStato(candidato.getStato());
			
		
			return candidatura;
		}

		
		
		@Override
		public CandidaturaDTO trovaCandidatura(String id) {
			
			int idCandidato = Integer.parseInt(id);
			Candidatura cand= em.find(Candidatura.class, idCandidato);
			
			return convertToDTO(cand);
		}

		@Override
		public CandidaturaDTO trovaCandidatura(int id) {
			
			Candidatura cand= em.find(Candidatura.class, id);
			return convertToDTO(cand);
		}
		
}
